﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

using LowLevelGraphics.ImageFormats.SVG.Shapes;

namespace LowLevelGraphics.ImageFormats.SVG
{
    public abstract class Shape : Element
    {
        protected Style m_Style = new Style();
        protected PointF m_ptLocation = Point.Empty;

        /// <summary>
        /// Initializes a new instance of the <see cref="Shape"/> class.
        /// </summary>
        public Shape()            
        {
            m_Style.FillColor = Color.Black;
        }

        /// <summary>
        /// Gets or sets the style.
        /// </summary>
        /// <value>The style.</value>
        public Style Style
        {
            get { return m_Style; }
            set { m_Style = value; }
        }

        /// <summary>
        /// Gets or sets the location.
        /// </summary>
        /// <value>The location.</value>
        public PointF Location
        {
            get { return m_ptLocation; }
            set { m_ptLocation = value; }
        }

        /// <summary>
        /// Gets or sets the X.
        /// </summary>
        /// <value>The X.</value>
        public float X
        {
            get { return m_ptLocation.X; }
            set { m_ptLocation.X = value; }
        }

        /// <summary>
        /// Gets or sets the Y.
        /// </summary>
        /// <value>The Y.</value>
        public float Y
        {
            get { return m_ptLocation.Y; }
            set { m_ptLocation.Y = value; }
        }

        /// <summary>
        /// Draws the specified g.
        /// </summary>
        /// <param name="g">The g.</param>
        public virtual void Draw(Graphics g)
        {
            throw new NotImplementedException();
        }
    }
}
